home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CU Amiga Super CD-ROM 17
/
CU Amiga Magazine's Super CD-ROM 17 (1997)(EMAP Images)(GB)[!][issue 1997-12].iso
/
CUCD
/
Graphics
/
RTGmaster
/
demos
/
network
/
P2PServ.c
< prev
next >
Wrap
C/C++ Source or Header
|
1997-09-26
|
2KB
|
82 lines
#include <clib/socket_protos.h>
#include <pragmas/socket_pragmas.h>
#include <clib/rtgextra_protos.h>
#include <pragmas/rtgextra_pragmas.h>
#include <clib/exec_protos.h>
#include <pragmas/exec_pragmas.h>
#include <stdio.h>
#include <netdb.h>
#include <rtgmaster/rtgtcpip.h>
#define UDPDemo 1
// If you want to compile this demo to use
// TCP instead of UDP, set UDPDemo to 0
struct Library *SocketBase=0;
struct Library *RTGExtraBase=0;
void main()
{
if (RTGExtraBase=OpenLibrary("rtgextra.library",0))
{
if (SocketBase=OpenLibrary("bsdsocket.library",0))
{
struct RTG_Socket *rs;
struct RTG_Socket *msgsock;
char buf[1024];
int rval;
long mode=1;
#ifndef UDPDemo
rs=OpenServer(SocketBase,3056,SOCK_STREAM,0);
#else
rs=OpenServer(SocketBase,3056,SOCK_DGRAM,0);
#endif
//RtgIoctl(SocketBase,rs,&mode);
while(1)
{
#ifndef UDPDemo
msgsock=RtgAccept(SocketBase,rs);
#else
msgsock=rs;
#endif
do {
struct sockaddr_in *si;
// Note : As GetUDPName returns 0 for TCP connections, this code
// works for TCP *and* UDP ...
// If you want a Connection with Multiple Client, WITHOUT
// using RunServer (works only with UDP...) you can simply
// open multiple Clients and then test, from which Client a
// Message came using RtgInAdr (it can't differentiate
// between multiple Clients running on the same machine, BTW).
si=GetUDPName(SocketBase,msgsock);
rval=RtgRecv(SocketBase,msgsock,buf,si,1024);
#ifndef UDPDemo
#else
if (rval>0) printf("Message from : %s\n",RtgInAdr(SocketBase,si));
#endif
if (rval>0) RtgSend(SocketBase,msgsock,buf,si,rval);
} while (rval>0);
#ifndef UDPDemo
CloseClient(SocketBase,msgsock);
#endif
}
if (SocketBase) CloseLibrary(SocketBase);
if (RTGExtraBase) CloseLibrary(RTGExtraBase);
}
}
}